#ifndef __OBJ_TEXTURE_H__
#define __OBJ_TEXTURE_H__

#include "../AppHeader.h"
#include "ObjectShader.h"

class ObjectTexture
{
private:
	GLuint* m_TBO;
	GLuint m_TBO_size;
	_utInt32 m_TargetTex;
	char** m_strSRCs;
	GLenum m_Format;
private:
	GLuint Init();
	GLuint Init2D();
	GLuint InitCube();
public:
	ObjectTexture() : m_TBO(NULL), m_TBO_size(0), m_TargetTex(1), m_strSRCs(NULL){}
	~ObjectTexture(){}

	virtual GLuint Init(GLenum format, _utInt32, char**);
	virtual GLuint Init(ObjectTexture &);
	virtual void Bind(ObjectShader);
	virtual void UnBind();
	virtual void Destroy();

	const GLuint* GetTBO(){ return m_TBO; }
	const GLuint GetTBOSize(){ return m_TBO_size; }
	const _utInt32 GetTextureTarget(){ return m_TargetTex; }
	const GLenum GetTextureFormat(){ return m_Format; }
	char** GetSRCs(){ return m_strSRCs; }
};

#endif